# Makefile d'installation bebop framework version 1.0

# cf INSTALL

# Pour Installation :
# Necessite la variable d'environnement BEBOPDIR pointant vers 
# le repertoire d'installation de bebop : exemple ~/bebop

# export BEBOPDIR=~/bebop
# make install 

# A l'installation, on cree un repertoire $BEBOPDIR/bin/ dans lequel on recopie les 
# binaires du framework, ainsi qu'un repertoire $BEBOPDIR/boplibs/ pour 
# les librairies de developpement en bebop.

WEBHOME = barbin@clipper.ens.fr:www/bebop

VERSION = 1.0.1
BEBOPVERSION = bebop$(VERSION)

BEBOPARCHIVE = $(BEBOPVERSION).tar.gz

EXE = bopmap bopsimu bopipe bopin boprezo bop2c bop2vlog bop2xml boptouch bopbuild bopbuild.bat

# Pour l'installation, on peut specifier un repertoire perso
# qui est reference dans le PATH.
PERSOPATHDIR = ~/exe_perso

# make : pour compiler localement les sources et les libs
world : DIRP Msources MGet checkbebopdir

DIRP :
	mkdir -p $(BEBOPVERSION)
	mkdir -p $(BEBOPVERSION)/bin
	mkdir -p $(BEBOPVERSION)/boplibs
	mkdir -p $(BEBOPVERSION)/template

# make install : pour recopier les binaires et les libs utilisateur dans BEBOPDIR
install : checkbebopdir MGetHM message

dev :	
	make -C sources bplib.cmxa
	make -C sources -f NativeCodeMakefile
	make -C sources cma
	make world
	make install

checkbebopdir :
	more pre_installation

$(BEBOPARCHIVE).lock : $(BEBOPARCHIVE)
	scp $(BEBOPARCHIVE) $(WEBHOME)/.
	touch $(BEBOPARCHIVE).lock

$(BEBOPARCHIVE) : $(foreach i, $(EXE), $(BEBOPVERSION)/bin/$(i))
	tar -czf $(BEBOPARCHIVE) $(BEBOPVERSION)

release : $(BEBOPARCHIVE).lock

message :
	more installation_terminee

Msources :
	make -C sources

MGet : 
	cp -v -p -t ./$(BEBOPVERSION)/boplibs/ sources/bplib/*.cmxa sources/bplib/*.cmi sources/bplib/*.a sources/bplib/*.ml sources/bplib/*.mly sources/bplib/*.mll
	cp -v sources/bplib/MakefileBplib ./$(BEBOPVERSION)/boplibs/Makefile
	cp -v -p -t ./$(BEBOPVERSION)/template/ web/template/*
	cp -v -p -t ./$(BEBOPVERSION)/bin/ $(foreach i, $(EXE), sources/$(i))
	cp -v -p -t ./$(BEBOPVERSION)/bin/ web/bpinclude/*.bp? web/bpinclude/*.ml
	cp -v -p  web/bpinclude/BinMakefile ./$(BEBOPVERSION)/bin/Makefile
	chmod a+rx ./$(BEBOPVERSION)/bin/*
	cp -v -p -t ./$(BEBOPVERSION)/boplibs/ web/include/*.bop
	cp -v -p web/BEBOPMakefile $(BEBOPVERSION)/.
	cp -v -p web/BEBOPWinMakefile $(BEBOPVERSION)/.
#	cp -p web/stdlib.bop $(BEBOPVERSION)/boplibs/.
	chmod a+r ./$(BEBOPVERSION)/boplibs/*

MGetHM :
	mkdir -p $(BEBOPDIR)
	mkdir -p $(BEBOPDIR)/boplibs
	mkdir -p $(BEBOPDIR)/bin
	mkdir -p $(BEBOPDIR)/template
	cp -v -p -t $(BEBOPDIR)/boplibs/ $(BEBOPVERSION)/boplibs/*.bop
	cp -v -p -t $(BEBOPDIR)/ $(BEBOPVERSION)/*Makefile
	cp -v -p -t $(BEBOPDIR)/boplibs/ $(BEBOPVERSION)/boplibs/*
	cp -v -p -t $(BEBOPDIR)/bin/ $(foreach i, $(EXE), sources/$(i))
	cp -v -p -t $(BEBOPDIR)/bin/ $(BEBOPVERSION)/bin/*.bp? $(BEBOPVERSION)/bin/*.ml
	cp -v -p -t $(BEBOPDIR)/bin/ $(BEBOPVERSION)/bin/Makefile
	cp -v -p -t $(BEBOPDIR)/template/ $(BEBOPVERSION)/template/*

# avec clean les binaires restent dans le bin local
clean :
	make -C sources clean
	make -C sources/bplib clean
	more nettoyage_termine

# uninstall : restitue l'etat initial avant toutes les compilations
# pour desinstaller completement bebop, effacer simplement son dossier 
# d'installation.
uninstall :
	make -C sources/bplib uninstall
	make -C sources uninstall
	more desinstallation_terminee

tilde :
	rm -f *~
	make -C sources tilde
	make -C web tilde

get_bin_perso :
	cp -p -t $(PERSOPATHDIR) $(foreach i, $(EXE), ./$(BEBOPVERSION)/bin/$i)

# sur un autre ordi, c'est ~/bin_perso qui est inclu dans le PATH
getT40 :
	cp -p -t ~/bin_perso $(foreach i, $(EXE), ./$(BEBOPVERSION)/bin/$i)
